/*
 * @Description: quicker变量转换插件
 * @Date: 2021-02-08 08:57:10
 */

/**
 *  驼峰加转换为分隔符
 * @param {String} str 
 * @param {String} separator 分隔符
 */
function camelToStrike(str, separator) {
    var temp = str.replace(/([A-Z])/g, `${separator}$1`).toLowerCase();
    if (temp.startsWith('-')) {
        temp = temp.slice(1);
    }
    return temp;
}
/**
 * 转换为驼峰命名
 * @param {String} str 
 */
function convertToCamel(str) {
    return str.replace(/[\_,\-,\s]+(\w)/g, function (all, letter) {
        return letter.toUpperCase();
    });

}
// .js 主函数 exec()
function exec() {
    const initStr = quickerGetVar('initStr'); // 读取initStr变量值, (initStr 是动作里的变量)
    var convertType = quickerGetVar('convertType'); // 读取initStr变量值, (initStr 是动作里的变量)

    var convertStr = '';
    switch (convertType) {
        case '驼峰>>中划线':
            convertStr = camelToStrike(initStr, '-');
            break;
        case '驼峰>>下划线':
            convertStr = camelToStrike(initStr, '_');
            break;
        case '转驼峰':
            convertStr = convertToCamel(initStr);
            break;
        case '全大写':
            convertStr = initStr.toUpperCase();
            break;
        case '全小写':
            convertStr = initStr.toLowerCase();
            break;
        case '首字母大写':
            convertStr = initStr.charAt(0).toUpperCase() + initStr.slice(1)
            break;
        case '首字母小写':
            convertStr = initStr.charAt(0).toLowerCase() + initStr.slice(1)
            break;
        default:
            break;
    }

    quickerSetVar('initStr', convertStr); // 输出修改后的值到initStr变量中。
    return 0; // 返回0表示成功。返回其他数字表示失败。
}

// console.log(convertToCamel('abc-def','_'));